package cn.itsource.pet.controller;

import cn.itsource.basic.util.AjaxResult;
import cn.itsource.basic.util.PageList;
import cn.itsource.pet.domain.Pet;
import cn.itsource.pet.domain.PetDto;
import cn.itsource.pet.query.PetQuery;
import cn.itsource.pet.service.IPetService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
 * 宠物类型控制器
 */
@RestController
@RequestMapping("/pet")
@Api(tags = "宠物类型管理", description = "宠物类型操作接口")
public class PetController {

    @Autowired
    private IPetService petService;


    /**
     * 查询所有
     */
    @PostMapping("/findPage")
    public PageList<Pet> find(@RequestBody PetQuery petQuery){
        //查询分页数据
        return petService.findPage(petQuery);
    }

    /**
     * 查询详情
     */
    @PostMapping("/detail/{id}")
    public AjaxResult detail(@PathVariable("id") Long id){
        //查询详情
        return petService.detail(id);
    }

    /**
     * 新增或修改的操作
     * 根据id来区分新增和修改
     * 怎么区分请求使用的请求方式  这里是post
     */
    @PostMapping
    public AjaxResult update(@RequestBody @Valid Pet pet){

        petService.saveOrUpdate(pet);
        return AjaxResult.createSuccess();

    }

    /**
     * 上下架
     * @param petDto
     * @return
     */
    @PostMapping("upOrDownPet")
    public AjaxResult upOrDownPet(@RequestBody PetDto petDto){

        return petService.upOrDownPet(petDto);

    }

    /**
     * 用户端查询宠物列表
     * @param petDto
     * @return
     */
    @PatchMapping("queryHomePage")
    public PageList<Pet> queryHomePage(@RequestBody PetDto petDto){

        return petService.queryHomePage(petDto);

    }

}
